Flow control between computer system hosts and data terminals is needed in many cases to prevent a high-speed host from transmitting more information in a given period than a terminal can display or buffer. At present, most terminals incorporate microprocessors for controlling the reception and transmission of data between the terminal and the host computer system. The microprocessor utilizes an internal buffer to store the data being received from the host computer until this data can be printed or displayed.
Within the art, it is known to use flow control schemes whereby the microprocessor when it senses that its internal buffer is near overflowing transmits a flow control character to the host computer. The host computer is responsive to the flow control character to cease transmission of data to the terminal. When the terminal is capable of receiving more information, the microprocessor transmits another flow control character to the host computer system causing the latter to recommence transmission of data. One such scheme uses the control-S character to suspend transmission and the control-Q character to restart the transmission.
Also in the art, it is known to utilize control signals that are transmitted on separated conductors from those used to communicate the data to allow the terminal to start and stop communication with a host computer. While this scheme is simple and effective, it is rarely used, largely because the host computers normally do not have the hardware necessary to read the state of these control leads and also because the attachment of these leads require that the computer terminals be directly connected to the host computer system. Normally, the terminals are not directly connected to the host computer system but communicate with the host computer system via a telephone switching system or a similar voice band switching system.
Whereas the utilization of special flow characters for stopping and starting the transmission of data from the host computer to the terminal presents a solution to the problem of the terminal receiving too much data, another problem exists in that the flow control characters then cannot be used by application programs for other functions. One such type of application program is the so called visual editor program which allows the operator of a terminal to input and edit information in an extremely efficient manner. The reason for this efficiency is that the operator of the terminal has a direct visual picture of the information that is presently in the host computer system. Because of the large number of operations which such an application program can perform, there exists a problem in that there are not a sufficient number of unique keys for controlling these different operations and yet allow the normal inputing of data to the host computer system. Another application program that needs to be able to receive these special characters is one which is reading data files from sophisticated terminals doing stand-alone processing operations. Such terminals often only use the host system for data storage.
The problem is further complicated by the fact that the application program does not directly transmit or receive information from the terminal but rather uses the facilities of an operating system controlling the host computer. Such an operating system is described in D. M. Ritchie and K. Thompson, "The UNIX Time-Sharing System," Bell System Technical J., Vol. 57, No. 6, Part 2, July, 1978, pp. 1905-1940. In particular, an I/O handler routine in the operating system is used to communicate information between a terminal and the application program.
From the foregoing, it can be seen that there exists a need for a method that allows the utilization of special flow control characters for the purpose of stopping and starting the transmission of data from a host computer to a terminal and yet allows the special characters to be directly communicated to an application program running on the host computer under control of an operating system.